package br.com.sbc.ejb.entity;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;

@Entity
@NamedQueries({
	@NamedQuery(name="Usuario.consultarPorEmail", query="select u from Usuario u where u.email =:email "),
	@NamedQuery(name="Usuario.consultarTodos", query="select u from Usuario u "),
	@NamedQuery(name="Usuario.consultarPorNome", query="select u from Usuario u where upper(u.nome)like :nome "),
	@NamedQuery(name="Usuario.consultarUsuarioPorNomeComplete", query="Select u.nome from Usuario u where upper(u.nome) like :digitado"),
	@NamedQuery(name="Usuario.consultarUsuarioPorEmailComplete", query="Select u.email from Usuario u where upper(u.email) like :digitado")
})
public class Usuario implements Serializable{

	private static final long serialVersionUID = 1L;
	
	@Id @GeneratedValue
	@Column(name="ID_USUARIO")	
	private Long idUsuario;
	private String email;
	private String senha;
	private String nome;
	private String cargo;
	private String celula;
	
	@Lob
	@Column(columnDefinition="mediumblob")
	private byte[] foto;

	private Long reputacao;
	
	@Enumerated(EnumType.STRING)
	@Column(nullable = false)
	private Perfil perfil;
	
	@Enumerated(EnumType.STRING)
	@Column(nullable = false)
	private Status status;
	
	@OneToMany(mappedBy="usuario")
	private List<Postagem> postagens;
	
	@Column(name = "endereco_foto")
	private String enderecoFoto;
	
//**************************GETTERS AND SETTERS ************************************************
	
	public Long getIdUsuario() {
		return idUsuario;
	}
	public void setIdUsuario(Long idUsuario) {
		this.idUsuario = idUsuario;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getSenha() {
		return senha;
	}
	public void setSenha(String senha) {
		this.senha = senha;
	}
	public String getPrimeiroNome() {
		if (nome.indexOf(" ")== -1) {
			nome=nome.substring(0, nome.length());
		}else{
		nome = nome.substring(0, nome.indexOf(" ")+1);
		}
		return nome;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getCargo() {
		return cargo;
	}
	public void setCargo(String cargo) {
		this.cargo = cargo;
	}
	public String getCelula() {
		return celula;
	}
	public void setCelula(String celula) {
		this.celula = celula;
	}

	public List<Postagem> getPostagens() {
		return postagens;
	}
	public void setPostagens(List<Postagem> postagens) {
		this.postagens = postagens;
	}
	public Perfil getPerfil() {
		return perfil;
	}
	public void setPerfil(Perfil perfil) {
		this.perfil = perfil;
	}

	public Status getStatus() {
		return status;
	}
	public void setStatus(Status status) {
		this.status = status;
	}
	public Long getReputacao() {
		return reputacao;
	}
	public void setReputacao(Long reputacao) {
		this.reputacao = reputacao;
	}
	public byte[] getFoto() {
		return foto;
	}
	public void setFoto(byte[] foto) {
		this.foto = foto;
	}
	public String getEnderecoFoto() {
		return enderecoFoto;
	}
	public void setEnderecoFoto(String nderecoFoto) {
		this.enderecoFoto = nderecoFoto;
	}
}
